#!/usr/bin/env python
"""
创建超级管理员脚本
"""
import os
import sys
import django

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ship_schedule.settings')
django.setup()

from authentication.models import User, Role, Permission

def create_superuser():
    email = 'admin@admin.com'
    password = 'admin123@'
    
    # 检查用户是否已存在
    if User.objects.filter(email=email).exists():
        print(f"用户 {email} 已存在")
        user = User.objects.get(email=email)
        # 更新为超级用户权限
        user.is_staff = True
        user.is_superuser = True
        user.is_active = True
        user.save()
        print(f"已更新用户 {email} 为超级管理员")
    else:
        # 创建超级管理员用户
        user = User.objects.create_user(
            email=email,
            password=password,
            first_name='系统',
            last_name='管理员',
            is_staff=True,
            is_superuser=True,
            is_active=True
        )
        print(f"超级管理员 {email} 创建成功")
    
    # 创建或获取超级管理员角色
    admin_role, created = Role.objects.get_or_create(
        name='超级管理员',
        defaults={
            'description': '系统超级管理员，拥有所有权限',
            'is_active': True
        }
    )
    
    if created:
        print("超级管理员角色创建成功")
        
        # 获取所有权限
        all_permissions = Permission.objects.all()
        admin_role.permissions.set(all_permissions)
        print(f"为超级管理员角色分配了 {all_permissions.count()} 个权限")
    
    # 为用户分配超级管理员角色
    if not user.roles.filter(id=admin_role.id).exists():
        user.roles.add(admin_role)
        print("为用户分配超级管理员角色成功")
    
    print("\n=== 超级管理员信息 ===")
    print(f"邮箱: {email}")
    print(f"密码: {password}")
    print(f"姓名: {user.first_name} {user.last_name}")
    print(f"角色: {admin_role.name}")
    print(f"用户权限: 超级用户")
    print("===================")

if __name__ == '__main__':
    create_superuser()